The present disclosure relates to installing software on a computer platform. A computer platform is a computer including a particular operating system (OS) for that computer (e.g., WINDOWS® OS, MAC® OS, or LINUX® OS). Software developers often create source code that can be appropriately compiled for respective computer platforms, and then independently generate native installation packages for each target platform. Each native installation package is associated with a specific computer platform, and these native installation packages can then be distributed for installation on appropriate machines. For a particular target platform, the appropriate native installation package is obtained from the software developer, and an OS installer can be used to process the native installation package in order to install the application. For example, INSTALLSHIELD® software can be used to produce an .msi file for installation on WINDOWS® machines, and a different software tool can be used to produce .pkg files for installation on MAC® machines.
In order to facilitate this process of generating native installation packages for distribution, some software developers have used a common specification of the installer package for different platforms. This common specification can then be used to create each respective platform-specific installation package, where the common specification indicates information such as which source files and which compiler to use for different target platforms. In any event, the distributor of the desktop application distributes different installation packages for different target platforms, and the customer generally must ensure, when acquiring a software application, that they are purchasing the correct installation package for their system.
Other software developers have created cross-platform installation packages, such as the JAVA® Archive (JAR) file format, that get deployed to the end-user system. The cross-platform package can then be expanded (e.g., decrypted and uncompressed) and written directly to disk using code provided by the software developer and/or the developer of the cross-platform package format. Typically, such cross-platform software relies on a virtual machine, such as the JAVA® Virtual Machine (JVM) (available from Sun Microsystems, Inc.), to run on the target platform.
The JVM provides a runtime environment and Java interpreter for most operating systems, including WINDOWS® OS, MAC® OS, AND LINUX® OS. Java source code files (files with a .java extension) are compiled into a format called bytecode (files with a class extension), which can then be executed by a Java interpreter. Bytecode can be converted directly into machine language instructions by a just-in-time compiler (JIT).
Flash® Player (available from Adobe Systems Incorporated) is another virtual machine, which is used to run, or parse, Flash® files including ActionScript or Shockwave Flash (SWF). The Flash® Player and Flash® Authoring software allow development of projectors (self-running SWF movies) that run on a specific target platform, by embedding the SWF data in the Flash® Player executable to create a new .exe file, and manipulating a byte pattern in the .exe file to indicate the presence of the SWF data. Such projectors can then be distributed for use on the target platform.